ioping コマンドを Graviton(ARM)インスタンスで利用する手順
Graviton(ARM)プロセッサのインスタンスでディスクの I/O レイテンシーを計測するioping
を利用するまでの備忘録です。
パッケージでの提供はなくソースからコンパイルすることになりました。
koct9i/ioping: simple disk I/0 latency measuring tool
検証環境
- ioping: version 1.3
- OS: Amazon Linux 2
- AMI: amzn2-ami-kernel-5.10-hvm-2.0.20221103.3-arm64-gp2
- Instances
- c6g.4xlarge(Gravtion 2)
- c7g.4xlarge(Graviton 3)
コンパイル手順早見
Amazon Linux 2
sudo yum install git gcc -y git clone https://github.com/koct9i/ioping.git cd ioping/ make ioping
パッケージはなかったの?
README を確認すると RHEL/CentOS の提供はありませんでした。Graviton ですしなおのこと期待薄です。コンパイルして動作確認することにしました。
ioping をコンパイルする
リポジトリからソースをクローンするためにgit
と C で書かれていたのでコンパイラ gcc
をインストールします。ともに Amazon Linux 2 にデフォルトではインストールされていませんでした。
sudo yum install git gcc -y
ソースコードをクローンしてきます。
git clone https://github.com/koct9i/ioping.git
ディレクトリを移動してコンパイルします。
cd ioping/ make ioping
ioping
ファイルが生成されました。
$ ll -h 合計 204K -rw-rw-r-- 1 ec2-user ec2-user 35K 12月 16 08:21 LICENSE -rw-rw-r-- 1 ec2-user ec2-user 2.7K 12月 16 08:21 Makefile -rw-rw-r-- 1 ec2-user ec2-user 2.2K 12月 16 08:21 README.md -rw-rw-r-- 1 ec2-user ec2-user 13K 12月 16 08:21 changelog -rwxrwxr-x 1 ec2-user ec2-user 119K 12月 16 08:22 ioping -rw-rw-r-- 1 ec2-user ec2-user 9.2K 12月 16 08:21 ioping.1 -rw-rw-r-- 1 ec2-user ec2-user 42K 12月 16 08:21 ioping.c -rw-rw-r-- 1 ec2-user ec2-user 1.3K 12月 16 08:21 ioping.spec
$ file ioping ioping: ELF 64-bit LSB executable, ARM aarch64, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 3.7.0, BuildID[sha1]=32bd0fdee4e2d6668ba957f8b879e0068d173b2f, not stripped
動作確認
バージョンを確認できました。
$ ./ioping -v ioping 1.3.3.g9471fed
-c
オプションでルートボリューム(EBS)のレイテンシーを測定してみました。平均で 461.1 us でした。
$ ./ioping -c 4 -D ~ 4 KiB <<< /home/ec2-user (xfs /dev/nvme0n1p1 7.98 GiB): request=1 time=1.21 ms (warmup) 4 KiB <<< /home/ec2-user (xfs /dev/nvme0n1p1 7.98 GiB): request=2 time=346.8 us 4 KiB <<< /home/ec2-user (xfs /dev/nvme0n1p1 7.98 GiB): request=3 time=283.5 us 4 KiB <<< /home/ec2-user (xfs /dev/nvme0n1p1 7.98 GiB): request=4 time=752.9 us --- /home/ec2-user (xfs /dev/nvme0n1p1 7.98 GiB) ioping statistics --- 3 requests completed in 1.38 ms, 12 KiB read, 2.17 k iops, 8.47 MiB/s generated 4 requests in 3.00 s, 16 KiB, 1 iops, 5.33 KiB/s min/avg/max/mdev = 283.5 us / 461.1 us / 752.9 us / 208.0 us
EFS をマウントしていたので同様に測定しました。平均で 1.44 ms と ルートボリュームの EBS と比べるとさすがに遅い結果です。
$ sudo ./ioping -c 4 -D /mnt/test-efs-burst/ 4 KiB <<< /mnt/test-efs-burst/ (nfs4 fs-0985f42875a6604a2.efs.ap-northeast-1.amazonaws.com:/ 8192.0 PiB): request=1 time=1.88 ms (warmup) 4 KiB <<< /mnt/test-efs-burst/ (nfs4 fs-0985f42875a6604a2.efs.ap-northeast-1.amazonaws.com:/ 8192.0 PiB): request=2 time=1.86 ms 4 KiB <<< /mnt/test-efs-burst/ (nfs4 fs-0985f42875a6604a2.efs.ap-northeast-1.amazonaws.com:/ 8192.0 PiB): request=3 time=1.17 ms 4 KiB <<< /mnt/test-efs-burst/ (nfs4 fs-0985f42875a6604a2.efs.ap-northeast-1.amazonaws.com:/ 8192.0 PiB): request=4 time=1.29 ms --- /mnt/test-efs-burst/ (nfs4 fs-0985f42875a6604a2.efs.ap-northeast-1.amazonaws.com:/ 8192.0 PiB) ioping statistics --- 3 requests completed in 4.33 ms, 12 KiB read, 693 iops, 2.71 MiB/s generated 4 requests in 3.00 s, 16 KiB, 1 iops, 5.33 KiB/s min/avg/max/mdev = 1.17 ms / 1.44 ms / 1.86 ms / 301.8 us
ioping
コマンドはソースからコンパイルして問題なく動作しました。
おわりに
Graviton(ARM)でもコンパイルすれば問題なく動きました。手元に Graviton 3 のインスタンス(c7g.4xlarge)もあったのでついでに確認しましたが同じく動作しました。
個人的に忘れたころにちょっとレイテンシー測りたいとなりそうなので書き残しました。